package com.cardone.platform.authority.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.authority.dto.NavigationDto;

/**
 * 导航服务
 * 
 * @author yaoht
 */
public interface NavigationService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.authority.service.NavigationService";

	/**
	 * 初始化:导航
	 * 
	 * @param initNavigationList
	 *            导航集合
	 */
	void initNavigation(final List<NavigationDto> initNavigationList);

	/**
	 * 查询:导航
	 * 
	 * @param parentId
	 *            导航标识
	 * 
	 * @return 导航对象集合
	 */
	List<NavigationDto> findListNavigationByParentId(final String parentId);

	/**
	 * 查询:导航
	 * 
	 * @param parentId
	 *            导航标识
	 * @param level
	 *            层级
	 * @return 导航对象集合
	 */
	List<NavigationDto> findListNavigationByParentId(final String parentId, final int level);

	/**
	 * 保存:导航
	 * 
	 * @param saveNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	NavigationDto saveNavigationByIdOrCode(final NavigationDto saveNavigation);

	/**
	 * 保存:导航
	 * 
	 * @param saveNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	NavigationDto saveNavigationByCode(final NavigationDto saveNavigation);

	/**
	 * 删除:导航
	 * 
	 * @param deleteNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationByCode(final NavigationDto deleteNavigation);

	/**
	 * 删除:导航
	 * 
	 * @param deleteNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int deleteNavigationByIds(final NavigationDto deleteNavigation);

	/**
	 * 设置:导航
	 * 
	 * @param updateNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationByCode(final NavigationDto updateNavigation);

	/**
	 * 设置:导航
	 * 
	 * @param updateNavigation
	 *            导航对象
	 * 
	 * @return 影响行数
	 */
	int updateNavigationByIds(final NavigationDto updateNavigation);

	/**
	 * 读取:导航
	 * 
	 * @param readNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	Integer readNavigationByCodeNqId(final NavigationDto readNavigation);

	/**
	 * 读取:导航
	 * 
	 * @param readNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	Integer readNavigationByName(final NavigationDto readNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param findNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	NavigationDto findNavigationByCode(final NavigationDto findNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param findNavigation
	 *            导航对象
	 * 
	 * @return 导航对象
	 */
	NavigationDto findNavigationById(final NavigationDto findNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param findListNavigation
	 *            导航对象
	 * 
	 * @return 导航对象集合
	 */
	List<NavigationDto> findListNavigationByCode(final NavigationDto findListNavigation);

	/**
	 * 查询:导航
	 * 
	 * @param findListNavigation
	 *            导航对象
	 * 
	 * @return 导航对象集合
	 */
	List<NavigationDto> findListNavigationByName(final NavigationDto findListNavigation);

	/**
	 * 分页:导航
	 * 
	 * @param paginationNavigation
	 *            导航对象
	 * 
	 * @return 导航分页对象
	 */
	PaginationDto<NavigationDto> paginationNavigationByCode(final NavigationDto paginationNavigation);

	/**
	 * 分页:导航
	 * 
	 * @param paginationNavigation
	 *            导航对象
	 * 
	 * @return 导航分页对象
	 */
	PaginationDto<Map<String, Object>> paginationNavigationByName(final NavigationDto paginationNavigation);
}